package com.sayimo.maker.mall.goods.dao;

import java.util.List;
import java.util.Map;

import com.sayimo.framework.exception.DaoException;
import com.sayimo.framework.exception.ServiceException;
import com.sayimo.maker.mall.goods.vo.GoodsNormsStock;
import com.sayimo.maker.mall.goods.vo.GoodsNormsValueStock;




/**
 * @Copyright (c) 2016 广东省尚一互联网有限公司
 * @Project: schoolmallapi
 * @ClassName: GoodsNormsValuesInterfaceDao
 * @Description: 商品对应规则信息Dao
 * @Author: 王瑞清
 * @Date: 日期：2016年1月4日 时间：下午7:20:56
 * @Version 1.0.0
 */
public interface GoodsNormsValueStockInterfaceDao {

	/**
	 * 
	 * @MethodName queryGoodsNormsValueStockByGoodsId
	 * @Description 按商品ID和规格ID查询
	 * 
	 * @author chenpy
	 * @date 2016年1月5日 下午3:46:46
	 * @param
	 * @return GoodsNormsValueStock
	 * @VERSION 1.0.0
	 */
	public GoodsNormsValueStock queryGoodsNormsValueStockByGoodsId(GoodsNormsValueStock goodsNormsValueStock) throws DaoException;

	/** 
	* @Title: updateGoodsNormsStockById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月5日  时间：下午4:24:21
	* @Description: 更新库存
	* @param goodsNormsStock
	* @throws DaoException
	* @return void
	* @Version 1.0.0
	*/ 
	public void updateAbatementGoodsNormsStockById(GoodsNormsStock goodsNormsStock) throws DaoException;
	
	
	/** 
	* @Title: queryGoodsNormsValueStockByStockId 
	* @Author: 王瑞清
	* @Date:日期：2016年1月5日  时间：下午4:59:49
	* @Description: 查询库存
	* @param id
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	*/ 
	public Integer queryGoodsNormsValueStockByGoodsIdNormsValueId(Map<String, Object> pm) throws DaoException;
	
	/**
	 * 
	 * @MethodName changeGoodsNormsValue
	 * @Description 商品详情切换规格
	 * 
	 * @author chenpy
	 * @date 2016年1月6日 下午5:15:55
	 * @param 
	 * @return Map
	 * @VERSION 1.0.0
	 */
	public Map<String, Object> changeGoodsNormsValue(Map<String, Object> paramMap) throws DaoException;
	
	/**
	 * 
	 * @MethodName batchUpdateGoodsStock
	 * @Description 批量修改商品库存
	 * 
	 * @author chenpy
	 * @date 2016年1月18日 下午3:56:55
	 * @param 
	 * @return int
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings("rawtypes")
	public int batchUpdateGoodsStock(List list) throws DaoException;
	
	public Map<String,Object> getFirstGoodsNormsValueStockByGoodsId(Integer goodsId) throws DaoException;
	
	/**
	 * 
	* @Title: getSkuCodeByNomalId 
	* @Author: 田超
	* @Date:日期：2016年6月28日  时间：上午10:02:05
	* @Description: 通过商品id和规格id获得商品对应的skuCode
	* @param paramMap
	* @return
	* @throws DaoException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String, Object> querySkuCodeByNomalId(Map<String, Object> paramMap) throws DaoException;
	
	/**
	 * 
	* @Title: updateStockNum 
	* @Author: 田超
	* @Date:日期：2016年6月28日  时间：下午6:01:18
	* @Description: 更新商品的库存量
	* @param paramMap
	* @return
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	 */
	public Integer updateStockNum(Map<String, Object> paramMap) throws DaoException;

	/** 
	* @Title: getNormsValueStockByMap 
	* @Description: 
	* @param paramMap
	* @return
	* @return Map<String,Object>
	* @throws 
	*/ 
	public Map<String, Object> getNormsValueStockByMap(
			Map<String, Object> paramMap)throws DaoException;
	
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:updateActivityNumById
	 * @Description:更新活动商品数量
	 * @param ordersId
	 * @return
	 * @throws DaoException
	 * @Date 2016年8月15日,上午10:28:50
	 */
	public Integer updateActivityNumById(Integer ordersId) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:updateSeckillNumById
	 * @Description:更新秒抢活动商品数量
	 * @param ordersId
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月18日,下午2:59:21
	 */
	public Integer updateSeckillNumById(Integer ordersId) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:updateCutPriceNumById
	 * @Description:更新砍价活动商品数量
	 * @param ordersId
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月24日,上午9:33:04
	 */
	public Integer updateCutPriceNumById(Integer ordersId) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:updateReturnActivityNumById
	 * @Description:取消订单返还活动库存
	 * @param ordersId
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月18日,下午3:22:33
	 */
	public Integer updateReturnActivityNumById(Integer ordersId) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:updateReturnSeckillNumById
	 * @Description:取消订单返还秒抢库存
	 * @param ordersId
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月18日,下午3:22:45
	 */
	public Integer updateReturnSeckillNumById(Integer ordersId) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:updateReturnCutPriceNumById
	 * @Description:取消订单返还砍价库存
	 * @param ordersId
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月24日,上午9:41:18
	 */
	public Integer updateReturnCutPriceNumById(Integer ordersId) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:getActivityStockNum
	 * @Description:获取活动商品库存
	 * @param pm
	 * @return
	 * @throws DaoException
	 * @Date 2016年8月31日,下午6:47:05
	 */
	public Map<String, Object> getActivityStockNum(Map<String, Object> pm) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.goods.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 获取订单中所有的特奢汇商品
	  * @param 
	  * @throws 
	  * @return List
	  * @date 2016年9月12日
	  */ 
	public List queryTSHGoodsInOrders(Integer[] ordersIds) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.goods.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 判断普通商品库存
	  * @param 
	  * @throws 
	  * @return List
	  * @date 2016年9月13日
	  */ 
	public List queryLackStockGoodsInfoInOrders(Integer ordersId[]) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.goods.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 获取订单下商品的可发货地址信息(判断用户指定地址是否支持发货)
	  * @param 
	  * @throws 
	  * @return List
	  * @date 2016年9月14日
	  */ 
	public List queryOrdersLogistics(Map paramMap) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:getPreSeckillStockNum
	 * @Description:获取秒抢活动商品数量
	 * @param paramMap
	 * @return
	 * @throws ServiceException
	 * @throws DaoException 
	 * @Date 2016年10月18日,下午2:40:30
	 */
	public Map<String, Object> getSeckillStockNum(Map<String,Object> paramMap) throws DaoException;

	/** 
	* @Title: getGroupBuyStockNum 
	* @Description: 
	* @param paramMap
	* @return
	* @return Map<String,Object>
	* @throws 
	*/ 
	public Map<String, Object> getGroupBuyStockNum(Map<String, Object> paramMap)throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:getCutPriceStockNum
	 * @Description:砍价活动商品库存是否不足
	 * @param paramMap
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月24日,上午9:23:04
	 */
	public Map<String, Object> getCutPriceStockNum(Map<String, Object> paramMap)throws DaoException;

	/** 
	* @Title: updateGroupBuyNumById 
	* @Description: 扣减团购商品表活动商品数量
	* @param id
	* @return Integer
	* @throws 
	*/ 
	public Integer updateGroupBuyNumById(Integer id)throws DaoException;

	/** 
	* @Title: updateReturnGroupBuyNumById 
	* @Description:返还团购库存 
	* @param id
	* @return Integer
	* @throws 
	*/ 
	public Integer updateReturnGroupBuyNumById(Integer id)throws DaoException;
}
